home *** CD-ROM | disk | FTP | other *** search
- package java.lang;
-
- import java.util.Hashtable;
-
- public final class String {
- private char[] value;
- private int offset;
- private int count;
- private static Hashtable InternSet;
-
- public String() {
- this.value = new char[0];
- }
-
- public String(String var1) {
- this.count = var1.count;
- this.value = new char[this.count];
- int var2 = this.count;
- char[] var3 = this.value;
- System.arraycopy(var1.value, var1.offset, var3, 0, var2);
- }
-
- public String(char[] var1) {
- this.count = var1.length;
- this.value = new char[this.count];
- System.arraycopy(var1, 0, this.value, 0, this.count);
- }
-
- public String(char[] var1, int var2, int var3) {
- if (var2 < 0) {
- throw new StringIndexOutOfBoundsException(var2);
- } else if (var3 < 0) {
- throw new StringIndexOutOfBoundsException(var3);
- } else if (var2 + var3 > var1.length) {
- throw new StringIndexOutOfBoundsException(var2 + var3);
- } else {
- this.value = new char[var3];
- this.count = var3;
- System.arraycopy(var1, var2, this.value, 0, var3);
- }
- }
-
- public String(byte[] var1, int var2, int var3, int var4) {
- if (var3 < 0) {
- throw new StringIndexOutOfBoundsException(var3);
- } else if (var4 < 0) {
- throw new StringIndexOutOfBoundsException(var4);
- } else if (var3 + var4 > var1.length) {
- throw new StringIndexOutOfBoundsException(var3 + var4);
- } else {
- char[] var5 = new char[var4];
- this.count = var4;
- this.value = var5;
- if (var2 == 0) {
- for(int var8 = var4; var8-- > 0; var5[var8] = (char)(var1[var8 + var3] & 255)) {
- }
-
- } else {
- var2 <<= 8;
-
- for(int var6 = var4; var6-- > 0; var5[var6] = (char)(var2 | var1[var6 + var3] & 255)) {
- }
-
- }
- }
- }
-
- public String(byte[] var1, int var2) {
- this(var1, var2, 0, var1.length);
- }
-
- public String(StringBuffer var1) {
- synchronized(var1){}
-
- try {
- var1.shared = true;
- this.value = var1.value;
- this.offset = 0;
- this.count = var1.count;
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- private String(int var1, int var2, char[] var3) {
- this.value = var3;
- this.offset = var1;
- this.count = var2;
- }
-
- public int length() {
- return this.count;
- }
-
- public char charAt(int var1) {
- if (var1 >= 0 && var1 < this.count) {
- return this.value[var1 + this.offset];
- } else {
- throw new StringIndexOutOfBoundsException(var1);
- }
- }
-
- public void getChars(int var1, int var2, char[] var3, int var4) {
- System.arraycopy(this.value, this.offset + var1, var3, var4, var2 - var1);
- }
-
- public void getBytes(int var1, int var2, byte[] var3, int var4) {
- int var5 = var4;
- int var6 = this.offset + var2;
-
- for(int var7 = this.offset + var1; var7 < var6; var3[var5++] = (byte)this.value[var7++]) {
- }
-
- }
-
- public boolean equals(Object var1) {
- if (var1 != null && var1 instanceof String) {
- String var2 = (String)var1;
- int var3 = this.count;
- if (var3 == var2.count) {
- char[] var4 = this.value;
- char[] var5 = var2.value;
- int var6 = this.offset;
- int var7 = var2.offset;
-
- while(var3-- != 0) {
- if (var4[var6++] != var5[var7++]) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- return false;
- }
-
- public boolean equalsIgnoreCase(String var1) {
- return var1 != null && var1.count == this.count && this.regionMatches(true, 0, var1, 0, this.count);
- }
-
- public int compareTo(String var1) {
- int var2 = this.count;
- int var3 = var1.count;
- int var4 = var2 <= var3 ? var2 : var3;
- char[] var5 = this.value;
- char[] var6 = var1.value;
- int var7 = this.offset;
- int var8 = var1.offset;
-
- while(var4-- != 0) {
- char var9 = var5[var7++];
- char var10 = var6[var8++];
- if (var9 != var10) {
- return var9 - var10;
- }
- }
-
- return var2 - var3;
- }
-
- public boolean regionMatches(int var1, String var2, int var3, int var4) {
- char[] var5 = this.value;
- int var6 = this.offset + var1;
- int var7 = this.offset + this.count;
- char[] var8 = var2.value;
- int var9 = var2.offset + var3;
- int var10 = var9 + var2.count;
- if (var3 >= 0 && var1 >= 0 && var6 + var4 <= var7 && var9 + var4 <= var10) {
- while(var4-- > 0) {
- if (var5[var6++] != var8[var9++]) {
- return false;
- }
- }
-
- return true;
- } else {
- return false;
- }
- }
-
- public boolean regionMatches(boolean var1, int var2, String var3, int var4, int var5) {
- char[] var6 = this.value;
- int var7 = this.offset + var2;
- int var8 = this.offset + this.count;
- char[] var9 = var3.value;
- int var10 = var3.offset + var4;
- int var11 = var10 + var3.count;
- if (var4 >= 0 && var2 >= 0 && var7 + var5 <= var8 && var10 + var5 <= var11) {
- while(true) {
- if (var5-- <= 0) {
- return true;
- }
-
- char var12 = var6[var7++];
- char var13 = var9[var10++];
- if (var12 != var13) {
- if (!var1) {
- break;
- }
-
- char var14 = Character.toUpperCase(var12);
- char var15 = Character.toUpperCase(var13);
- if (var14 != var15 && Character.toLowerCase(var14) != Character.toLowerCase(var15)) {
- break;
- }
- }
- }
-
- return false;
- } else {
- return false;
- }
- }
-
- public boolean startsWith(String var1, int var2) {
- char[] var3 = this.value;
- int var4 = this.offset + var2;
- int var5 = this.offset + this.count;
- char[] var6 = var1.value;
- int var7 = var1.offset;
- int var8 = var1.count;
- if (var2 >= 0 && var4 + var8 <= var5) {
- do {
- --var8;
- if (var8 < 0) {
- return true;
- }
- } while(var3[var4++] == var6[var7++]);
-
- return false;
- } else {
- return false;
- }
- }
-
- public boolean startsWith(String var1) {
- return this.startsWith(var1, 0);
- }
-
- public boolean endsWith(String var1) {
- return this.startsWith(var1, this.count - var1.count);
- }
-
- public int hashCode() {
- int var1 = 0;
- int var2 = this.offset;
- char[] var3 = this.value;
- int var4 = this.count;
- if (var4 < 16) {
- for(int var5 = var4; var5 > 0; --var5) {
- var1 = var1 * 37 + var3[var2++];
- }
- } else {
- int var7 = var4 / 8;
-
- for(int var6 = var4; var6 > 0; var2 += var7) {
- var1 = var1 * 39 + var3[var2];
- var6 -= var7;
- }
- }
-
- return var1;
- }
-
- public int indexOf(int var1) {
- return this.indexOf(var1, 0);
- }
-
- public int indexOf(int var1, int var2) {
- int var3 = this.offset + this.count;
- char[] var4 = this.value;
-
- for(int var5 = this.offset + var2; var5 < var3; ++var5) {
- if (var4[var5] == var1) {
- return var5 - this.offset;
- }
- }
-
- return -1;
- }
-
- public int lastIndexOf(int var1) {
- return this.lastIndexOf(var1, this.count - 1);
- }
-
- public int lastIndexOf(int var1, int var2) {
- int var3 = this.offset;
- char[] var4 = this.value;
-
- for(int var5 = this.offset + (var2 >= this.count ? this.count - 1 : var2); var5 >= var3; --var5) {
- if (var4[var5] == var1) {
- return var5 - this.offset;
- }
- }
-
- return -1;
- }
-
- public int indexOf(String var1) {
- return this.indexOf(var1, 0);
- }
-
- public int indexOf(String var1, int var2) {
- char[] var3 = this.value;
- char[] var4 = var1.value;
- int var5 = this.offset + (this.count - var1.count);
- int var6 = this.offset + (var2 < 0 ? 0 : var2);
-
- label26:
- while(var6 <= var5) {
- int var7 = var1.count;
- int var8 = var6;
- int var9 = var1.offset;
-
- while(var7-- != 0) {
- if (var3[var8++] != var4[var9++]) {
- ++var6;
- continue label26;
- }
- }
-
- return var6 - this.offset;
- }
-
- return -1;
- }
-
- public int lastIndexOf(String var1) {
- return this.lastIndexOf(var1, this.count);
- }
-
- public int lastIndexOf(String var1, int var2) {
- if (var2 < 0) {
- return -1;
- } else {
- if (var2 > this.count - var1.count) {
- var2 = this.count - var1.count;
- }
-
- if (var1.count == 0) {
- return var2;
- } else {
- char[] var3 = this.value;
- char[] var4 = var1.value;
-
- for(int var5 = this.offset + var2; var5 >= this.offset; --var5) {
- int var6 = var1.count;
- int var7 = var5;
- int var8 = var1.offset;
-
- while(var3[var7++] == var4[var8++]) {
- --var6;
- if (var6 <= 0) {
- return var5 - this.offset;
- }
- }
- }
-
- return -1;
- }
- }
- }
-
- public String substring(int var1) {
- return this.substring(var1, this.count);
- }
-
- public String substring(int var1, int var2) {
- if (var1 > var2) {
- int var3 = var1;
- var1 = var2;
- var2 = var3;
- }
-
- if (var1 < 0) {
- throw new StringIndexOutOfBoundsException(var1);
- } else if (var2 > this.count) {
- throw new StringIndexOutOfBoundsException(var2);
- } else {
- return var1 == 0 && var2 == this.count ? this : new String(this.offset + var1, var2 - var1, this.value);
- }
- }
-
- public String concat(String var1) {
- int var2 = var1.count;
- if (var2 == 0) {
- return this;
- } else {
- char[] var3 = new char[this.count + var2];
- int var4 = this.count;
- System.arraycopy(this.value, this.offset, var3, 0, var4);
- var4 = this.count;
- System.arraycopy(var1.value, var1.offset, var3, var4, var2);
- return new String(0, this.count + var2, var3);
- }
- }
-
- public String replace(char var1, char var2) {
- if (var1 != var2) {
- int var3 = this.count;
- int var4 = -1;
-
- do {
- ++var4;
- } while(var4 < var3 && this.value[this.offset + var4] != var1);
-
- if (var4 < var3) {
- char[] var5 = new char[var3];
-
- for(int var6 = 0; var6 < var4; ++var6) {
- var5[var6] = this.value[this.offset + var6];
- }
-
- while(var4 < var3) {
- char var7 = this.value[this.offset + var4];
- var5[var4] = var7 == var1 ? var2 : var7;
- ++var4;
- }
-
- return new String(0, var3, var5);
- }
- }
-
- return this;
- }
-
- public String toLowerCase() {
- int var1 = this.count;
-
- for(int var2 = 0; var2 < var1; ++var2) {
- char var5 = this.value[this.offset + var2];
- char var4 = Character.toLowerCase(var5);
- if (var5 != var4) {
- char[] var7 = new char[var1];
-
- int var3;
- for(var3 = 0; var3 < var2; ++var3) {
- var7[var3] = this.value[this.offset + var3];
- }
-
- for(var7[var3++] = var4; var3 < var1; ++var3) {
- var7[var3] = Character.toLowerCase(this.value[this.offset + var3]);
- }
-
- return new String(0, var1, var7);
- }
- }
-
- return this;
- }
-
- public String toUpperCase() {
- int var1 = this.count;
-
- for(int var2 = 0; var2 < var1; ++var2) {
- char var5 = this.value[this.offset + var2];
- char var4 = Character.toUpperCase(var5);
- if (var5 != var4) {
- char[] var7 = new char[var1];
-
- int var3;
- for(var3 = 0; var3 < var2; ++var3) {
- var7[var3] = this.value[this.offset + var3];
- }
-
- for(var7[var3++] = var4; var3 < var1; ++var3) {
- var7[var3] = Character.toUpperCase(this.value[this.offset + var3]);
- }
-
- return new String(0, var1, var7);
- }
- }
-
- return this;
- }
-
- public String trim() {
- int var1 = this.count;
-
- int var2;
- for(var2 = 0; var2 < var1 && this.value[this.offset + var2] <= ' '; ++var2) {
- }
-
- while(var2 < var1 && this.value[this.offset + var1 - 1] <= ' ') {
- --var1;
- }
-
- return var2 <= 0 && var1 >= this.count ? this : this.substring(var2, var1);
- }
-
- public String toString() {
- return this;
- }
-
- public char[] toCharArray() {
- int var1 = this.count;
- char[] var2 = new char[var1];
- System.arraycopy(this.value, this.offset, var2, 0, var1);
- return var2;
- }
-
- public static String valueOf(Object var0) {
- return var0 == null ? "null" : var0.toString();
- }
-
- public static String valueOf(char[] var0) {
- return new String(var0);
- }
-
- public static String valueOf(char[] var0, int var1, int var2) {
- return new String(var0, var1, var2);
- }
-
- public static String copyValueOf(char[] var0, int var1, int var2) {
- return new String(var0, var1, var2);
- }
-
- public static String copyValueOf(char[] var0) {
- int var1 = var0.length;
- return new String(var0, 0, var1);
- }
-
- public static String valueOf(boolean var0) {
- return var0 ? "true" : "false";
- }
-
- public static String valueOf(char var0) {
- char[] var1 = new char[]{var0};
- return new String(0, 1, var1);
- }
-
- public static String valueOf(int var0) {
- return Integer.toString(var0, 10);
- }
-
- public static String valueOf(long var0) {
- return Long.toString(var0, 10);
- }
-
- public static String valueOf(float var0) {
- return Float.toString(var0);
- }
-
- public static String valueOf(double var0) {
- return Double.toString(var0);
- }
-
- public String intern() {
- if (InternSet == null) {
- InternSet = new Hashtable();
- }
-
- String var1 = (String)InternSet.get(this);
- if (var1 != null) {
- return var1;
- } else {
- InternSet.put(this, this);
- return this;
- }
- }
-
- int utfLength() {
- int var1 = this.offset + this.count;
- int var2 = 0;
-
- for(int var3 = this.offset; var3 < var1; ++var3) {
- char var4 = this.value[var3];
- if (var4 >= 1 && var4 <= 127) {
- ++var2;
- } else if (var4 > 2047) {
- var2 += 3;
- } else {
- var2 += 2;
- }
- }
-
- return var2;
- }
- }
-